iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Security

道德駭客新手入門系列 第 27

Day 27 網站應用程式入侵 5

  • 分享至 

  • xImage
  •  

What is Web API?

Web API(Web應用程式介面)提供線上的 Web 服務給使用者,用於擷取和更新來自多個線上來源的資料。它是一種特殊類型的介面,允許應用程式之間透過WEB互動。它還包括不同類型的工具、函數和協議,可用於開發軟體或應用程式,而無需複雜的實現。

Web Service APIs

  • SOAP API是一個基於XML和HTTP的通訊協議,用於不同平台(如Windows、macOS、Linux等)上運行的應用程式之間的互動。SOAP API被設計用於生成、檢索、修改和刪除不同類型的日誌,如配置文件、憑證和業務訊息。

  • RESTful API(RESTful 網路服務)是一種使用 REST(表示狀態轉移)架構風格的 API。這種 API 設計旨在實現 Web 資源的輕量級、可擴展、可靠和高性能的互操作性。以下是 RESTful API 的主要特點:

    1. 無狀態(Stateless): 伺服器不保存客戶端的狀態,每個請求都應該包含足夠的信息以便伺服器理解和處理它。這使伺服器能夠處理大量請求,因為它不需要保存客戶端的 SESSION。
    2. 可緩存(Cacheable): 伺服器可以在響應中提供緩存標頭,以告知客戶端是否可以將響應保存在本地緩存中。這可以改善效能,減少對伺服器的請求。
    3. 客戶端-伺服器架構(Client-Server): RESTful API 使用客戶端-伺服器模型,其中客戶端和伺服器是獨立的實體。伺服器負責處理後端業務邏輯,而客戶端負責發送請求和呈現數據。
    4. 統一界面(Uniform Interface): 資源必須通過使用標準 HTTP 方法(例如 GET、POST、PUT、DELETE)來訪問,並且每個資源都可以通過唯一的 URL 來識別。這使 API 更容易理解和使用。

    總之,RESTful API 提供了一種輕量級、高性能、可擴展且易於理解的方式,讓不同系統之間通過 HTTP 協議進行通訊,通常使用 JSON 來交換資料。這種設計風格被廣泛應用於現代 Web 和移動應用程式開發中。

What are Webhooks?

Webhooks是由使用者定義的HTTP回調或推送API,根據觸發的事件而提升,例如在貼文上收到評論或將程式碼推送到註冊表。Webhook允許應用程式使用最新的資訊來更新其他應用程式。一旦調用,它會向其他應用程式提供資料,這表示使用者可以即時收到實時資訊。

Webhooks有時被稱為「反向API」,因為它們提供了API規範所需的內容,開發人員應該建立API以使用Webhook。Webhook是一個API概念,也用於在特定事件觸發時從應用程式向手機號碼或電子郵件地址發送簡訊和通知。例如,如果您在線上商店中搜索某個商品,但該商品缺貨,您可以點擊「通知我」按鈕,當該商品有貨時,應用程式會發送通知給您。這些通知通常是透過Webhooks發送的。

Webhooks的運作

Webhooks是透過使用者界面或API與域名註冊一起註冊的,以通知客戶新事件的發生。生成的路徑包含在新事件發生時自動執行的必要程式碼。在這裡,系統不需要知道應該執行什麼;它們只需要跟蹤路徑以生成通知。

Webhook是一個強大的工具,因為一切都保持在網路上。如下圖所示,當系統2從域名的選定路徑獲得通知消息時,它不僅了解其他機器上的新事件發生,還對它們做出回應。該路徑包含可以透過HTTP POST請求訪問的程式碼。它還通知使用者消息是從何處觸發的,包括日期和時間以及與事件相關的其他詳細資訊。Webhooks可以是私有的或公開的。

Webhooks vs. APIs

  • Webhooks是網站向伺服器發送的自動訊息。API用於伺服器對網站的通訊。
  • Webhooks僅在進行新的更新時透過HTTP POST獲取報告或通知。API無論資料是否更新都進行調用。
  • Webhooks使用實時資訊來更新應用程式或服務。API需要進行額外的實現才能執行此操作。
  • Webhooks對資料流的控制較少。API對資料流有較易控制。

OWASP Top 10 API Security Risks

  1. 不安全的物件授權 Broken Object Level Authorization

    • API曝露物件識別符處理端點: 這表示應用程式的API公開了處理物件識別符的方式,這些識別符通常用於識別數據庫中的特定物件,例如用戶帳戶或文件。
    • 伺服器未正確追蹤客戶端狀態: 這表示伺服器未能適當地追蹤客戶端的狀態或權限。通常,伺服器應該知道哪個客戶端可以存取哪些物件,並實施存取控制。
    • 攻擊表面級存取控制缺陷: 由於伺服器未正確執行存取控制,攻擊者可以利用這個漏洞修改物件的識別符值。這將使他們能夠獲得未經授權的存取,並查看、修改或刪除數據。
  2. 無效身分認證 Broken User Authentication

    • 身份驗證機制中的漏洞: 身份驗證機制是確保用戶身份合法性的關鍵部分。然而,如果這些機制存在漏洞,攻擊者可以利用它們。
    • 攻擊者可以擄獲身份驗證令牌並竊取用戶身份: 攻擊者可能利用漏洞來擄獲身份驗證令牌,這些令牌通常用於確保用戶的身份。一旦攻擊者擁有有效的身份驗證令牌,他們可以冒充合法用戶,導致身份竊取問題。
    • 攻擊者可以利用身份驗證令牌和實施漏洞: 通過利用身份驗證令牌和實施漏洞,攻擊者可以輕鬆地破壞API的安全性。這可能包括未適當驗證用戶的請求,或者未實施適當的授權措施。
    • API容易受到身份驗證攻擊的威脅,例如資格填塞和暴力破解: 身份驗證攻擊是指攻擊者嘗試使用各種方法(例如嘗試大量密碼或使用已經洩漏的憑據)來入侵用戶帳戶。如果API的身份驗證機制不足以應對這些威脅,則API可能會受到資格填塞和暴力破解等攻擊的威脅。
  3. 過度數據曝露 Excessive Data Exposure

    • 敏感數據暴露: 過度數據曝露意味著應用程式或API公開了用戶不應該訪問的數據,這可能包括個人信息、金融信息、醫療記錄等敏感數據。這樣的曝露可能導致隱私侵犯和法律違規。
    • 未經授權的用戶訪問: 過度數據曝露的一個常見情況是,應用程式或API未適當地驗證和授權用戶,使未經授權的用戶能夠訪問敏感數據。這可能是由於訪問控制的不足或實施錯誤引起的。
    • 攻擊者可能利用曝露的數據: 攻擊者可以利用這些數據,例如進行身份竊取、針對用戶進行釣魚攻擊、進行詐騙等,造成嚴重的安全風險。
  4. 缺乏資源與速率限制 Lack of Resources and Rate Limiting

    • 允許攻擊者耗盡所有可用資源,導致合法使用者無法使用服務,引發拒絕服務攻擊(DoS)
    • 可能包含可被濫用以執行暴力破解攻擊的身份驗證漏洞
  5. 功能級別的授權問題 Broken Function Level Authorization

    • 通過不同的階層、群組和角色之間的存取控制策略的複雜性可能導致授權錯誤
    • 允許攻擊者未經授權地訪問管理功能或用戶資源
  6. 批量配置不當 Mass Assignment

    • 由於未正確綁定和基於白名單的過濾,API意外地暴露內部變數或對象
    • 允許未經授權訪問的攻擊者修改物件的屬性
  7. 不安全的組態設定 ********Security Misconfiguration

    • 安全配置錯誤包括漏洞,例如不安全的默認配置、臨時配置、開放的雲端存儲、配置不當的HTTP標頭、寬鬆的跨來源資源共享(CORS)以及缺少TLS/SSL。
    • 允許攻擊者執行各種攻擊,並危害系統的安全性。
  8. 注入攻擊 Injection

    • 將不受信任的資料作為查詢傳送給解釋器可能導致注入漏洞,例如 SQL、LDAP、XML 和命令注入。
    • 允許攻擊者通過傳送數據來執行惡意指令並獲得未授權訪問。
  9. 不當的資產管理 Improper Assets Management

    • 不適當的資產管理是由於API層次結構缺乏版本控制,且舊版API存在可以被攻擊者利用的弱點所導致的。
  10. 不足的日誌記錄和監控 Insufficient Logging and Monitoring

    • 缺乏適當的日誌記錄和監控,以及與事件應對的缺失或效能不佳的整合,會使系統變得脆弱。

API 弱點

現代網頁應用程式和SaaS平台廣泛使用API,因為它們具有豐富的功能,而大部分API安全主要關注技術方面。不良管理API權限、業務邏輯缺陷以及應用程式邏輯和敏感數據(例如個人身份識別信息(PII))的曝露,極大地擴大了攻擊面,為攻擊者打開了通往這些弱點的大門,以執行諸如DoS和代碼注入攻擊等多種攻擊。

  1. 枚舉資源
    • 設計缺陷可能導致嚴重的弱點,透過未經身份驗證的公共API洩露資訊。
    • 允許攻擊者輕鬆猜測使用者ID,危及使用者數據的安全性。
  2. 透過未簽名URL分享資源
    • API返回超媒體資源的URL,例如圖像、音訊或視訊文件,容易受到熱連結的威脅。
    • 這可能引發多個問題,如分析不足和資源壓力,並可供攻擊者利用。
    • 簽名URL可用於實施政策,例如速率限制、自動過期和有範圍的分享。
  3. 第三方程式庫的弱點
    • 開發者使用擁有開源軟件許可證的第三方軟件程式庫
    • 未定期更新和忽視安全修復可能導致許多安全弱點。
  4. 不當使用CORS
    • 跨來源資源共享(CORS)是一種機制,它允許網頁瀏覽器執行跨域請求;CORS的不當實施可能導致意外的缺陷。
    • 在私有API上使用“Access-Control-Allow-Origin”標頭來允許所有來源,可能導致熱連結問題。
  5. 程式碼注入攻擊
    • 如果輸入未經過潔淨處理,攻擊者可能使用代碼注入技術,如SQL注入(SQLi)和跨站腳本(XSS),將惡意的SQL語句或代碼添加到API上的輸入字段。
    • 允許攻擊者竊取關鍵信息,例如會話cookie和使用者憑證。
  6. RBAC 權限升級
    • 權限升級是一個常見的漏洞,存在於具有基於角色的訪問控制(RBAC)的API中,當對端點進行更改時,缺乏適當的注意。
    • 允許攻擊者獲得對使用者敏感信息的訪問權。
  7. 缺乏 ABAC 驗證
    • 沒有適當的基於屬性的訪問控制(ABAC)驗證會使攻擊者未經授權地訪問API對象或執行查看、更新或刪除等操作。
  8. 業務邏輯缺陷
    • 許多API存在業務邏輯上的弱點
    • 允許攻擊者利用合法的工作流程進行惡意用途。

上一篇
Day 26 網站應用程式入侵 4
下一篇
Day 28 網站應用程式入侵 6
系列文
道德駭客新手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言